背景:最近团队维护项目,涉及到文件下载,之前使用aliyun-oss-sdk-android-2.3.0.jar下载OSS的文件,现在添加文件服务器,参考了aliyun-oss的断点续传下载机制,后来发现aliyun-oss的库默认就写死了80端口,但是我们的文件服务器不是80端口。所以想到改一下里面的代码。
目的:仅分享这种修改jar包的方法。
思路一:直接写下载代码
- 一大堆续传逻辑,需要编写调试验证;
- 临发布才发现有这种问题。
最终因为时间紧迫,考虑其他方案。
思路二:拉源代码修改
这种思路还是比较科学的,只是在此时想到了思路三,然后就尝试了一番。
思路三:部分修改,编译
- 用JD-GUI(反编译)打开aliyun-oss-sdk-android-2.3.0.jar包,拷贝com.alibaba.sdk.android.oss.internal.RequestMessage代码。
- 用7z打开aliyun-oss-sdk-android-2.3.0.jar包,删掉com.alibaba.sdk.android.oss.internal.RequestMessage.class。
-
新建工程,导入修改后的aliyun-oss-sdk-android-2.3.0.jar,新建com.alibaba.sdk.android.oss.internal包,新建RequestMessage.java,把第一步的代码拷贝过来,修改代码:
int originPort = this.endpoint.getPort(); String baseURL = scheme + "://" + urlHost + (originPort <= 0 ? "" : ":" + originPort);
注意:包名类名要一样。
- 编译。
- 把target下com.alibaba.sdk.android.oss.internal.RequestMessage.class用7z拉回jar包的com.alibaba.sdk.android.oss.internal。
- 完成。
总结:拷贝代码,删掉jar包里的class,修改代码,编译生成class,拉回jar包。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。